package org.alesv.entranceExams.web.controller;

import javax.servlet.http.HttpSession;

import org.alesv.common.webapp.controller.BaseController;
import org.alesv.common.webapp.session.SessionManager;

/**
 * Game Of Ghost Base Controller.
 * 
 * @author alejandrosv
 */
public class GameOfGhostBaseController extends BaseController {

	/**
	 * Devuevle el sessionManager.
	 * 
	 * @param session
	 *            la session
	 * @return el sessionManager
	 */
	protected SessionManager getSessionManager(HttpSession session) {
		return SessionManager.getSessionManager(session);
	}

	/**
	 * Saca de session el atributo deseado.
	 * 
	 * @param session
	 *            la session
	 * @param attibuteName
	 *            nombre del atributo que se quiere sacar de session
	 * @return el objeto que se guardo con el nombre pasado como parámetro
	 */
	protected Object getSessionAttribute(HttpSession session,
			String attibuteName) {
		Object result = null;
		SessionManager sessionManager = getSessionManager(session);
		if (sessionManager != null) {
			result = sessionManager.getAttribute(attibuteName);
		}
		return result;
	}

	/**
	 * Guarda en session el objeto con el nombre de atributo deseados.
	 * 
	 * @param session
	 *            la session
	 * @param attibuteName
	 *            nombre del atributo que se quiere guardar en session
	 * @param attibuteValue
	 *            objeto que se quiere guardar en session
	 */
	protected void setSessionAttribute(HttpSession session,
			String attibuteName, Object attibuteValue) {
		SessionManager sessionManager = getSessionManager(session);
		if (sessionManager != null) {
			sessionManager.setAttribute(attibuteName, attibuteValue);
		}
	}

	/**
	 * Borra la session, eliminando todos los objetos.
	 * 
	 * @param session
	 *            la session
	 */
	protected void clearSession(HttpSession session) {
		SessionManager sessionManager = getSessionManager(session);
		sessionManager.clear(session);
	}

}
